// Copyright (c) Appeon. All rights reserved.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 
// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

using System;

namespace SnapObjects.Data
{
    internal class JsonTemplateDataFormater : TemplateDataFormater
    {
        public override object Format(object value)
        {
            if (value == null)
            {
                return "null";
            }
            else if (value is string str)
            {
                return "\"" + str.Replace("\"", "\\\"") + "\"";
            }
            else if (value is byte[] bytes)
            {
                return "\"" + Convert.ToBase64String((byte[])value) + "\"";
            }
            else if (value is bool b)
            {
                return b.ToString().ToLower();
            }
            else if (value is Guid guid)
            {
                return "\"" + guid.ToString() + "\"";
            }
            else if (value is DateTime dt)
            {
                return "\"" + dt.ToString() + "\"";
            }

            return value;
        }
    }
}
